RocketMQ Connect のコンセプト
コネクタ
コネクタは、データのコピー元とコピー先を定義します。ソースシステムからデータを読み取り、RocketMQに書き込むのがSourceConnectorであり、RocketMQからデータを読み取り、ターゲットシステムに書き込むのがSinkConnectorです。コネクタは作成するタスクの数を決定し、ワーカーから構成を受け取り、それをタスクに渡します。
タスク
タスクは、コネクタタスクシャーディングの最小割り当て単位であり、ソースデータをRocketMQ(SourceTask)に実際にコピーしたり、RocketMQからデータを読み取ってターゲットシステム(SinkTask)に書き込んだりする役割を担います。タスクはステートレスであり、動的に開始および停止できます。複数のタスクを並行して実行でき、コネクタによるデータコピーの並列処理は、主にタスクの数に反映されます。
ConnectのAPIを通じて、ConnectorとTaskの責任範囲を確認することもできます。Connectorは実装時にデータコピーフローを決定し、データソース関連の構成を受け取り、taskClassは作成するタスクのタイプを取得し、taskConfigsはタスクの最大数を指定し、タスクの構成を割り当てます。タスクは構成を取得した後、データソースからデータを読み取り、ターゲットストレージに書き込みます。
次の2つの図から、ConnectorとTaskの基本的な処理フローを明確に確認できます。
ワーカー
ワーカープロセスは、コネクタとタスクの実行環境であり、RESTful機能を提供し、HTTPリクエストを受け入れ、取得した構成をコネクタとタスクに渡します。さらに、コネクタとタスクの開始、コネクタ構成情報の保存、タスクの同期されたデータの位置情報の保存、およびロードバランシング機能も担当します。Connectクラスターの高可用性、スケーリング、および障害処理は、主にWorkerのロードバランシング機能に依存します。
上の図からわかるように、Workerは提供されたREST APIを介してhttpリクエストを受け取り、受信した構成情報を構成管理サービスに渡します。構成管理サービスは構成をローカルに保存し、他のワーカーノードと同期させると同時に、ロードバランシングをトリガーします。